package com.auth.service;

import com.auth.model.BsSystemMenus;
import com.exception.bean.Result;

/**
 * <dl>
 * <dt>MenuServiceI</dt>
 * <dd>Description: 菜单接口</dd>
 * <dd>CreateDate: 2017/8/21</dd>
 * </dl>
 *
 * @author l
 */
public interface MenuServiceI {

    /**
     * 删除菜单
     *
     * @param id     标示ID
     * @param unitid 单位ID
     * @param userId 用户ID (只有超级管理员有权限删除)
     * @return
     */
    Result deleteMenusItemById(String id, String unitid, String userId);

    /**
     * 添加菜单功能项
     *
     * @param mid    所属的系统功能菜单项ID
     * @param name   功能项名称
     * @param unitid 单位ID
     * @return
     */
    Result addMenusItem(String mid, String name, String unitid);

    /**
     * 修改系统功能项信息表
     *
     * @param id     标示ID
     * @param mid    功能项ID
     * @param name   功能项名称
     * @param unitid 单位ID
     * @return
     */
    Result updateMenusItemMenuIdOrNameById(String id, String mid, String name, String unitid);

    /**
     * 菜单功能项分页查询
     *
     * @param pageNo   页数
     * @param pageSize 行数
     * @param unitid   单位ID
     * @return
     */
    Result findMenusItemsPageByCondition(int pageNo, int pageSize, String unitid);

    /**
     * 添加菜单
     *
     * @param unitid 单位ID
     * @param name   功能菜单名称
     * @param pid    上级功能菜单ID
     * @param type   应用类型（APP、PC）
     * @return
     */
    Result addMenus(String unitid, String name, String pid, Integer type);

    /**
     * 删除菜单
     *
     * @param id     菜单ID
     * @param userId 管理员ID
     * @param unitid 单位ID
     * @return
     */
    Result deleteMenusById(String id, String unitid, String userId);

    /**
     * 修改菜单名称
     *
     * @param id     菜单ID
     * @param unitid 单位ID
     * @param name   菜单名称
     * @return
     */
    Result updateMenusNameById(String id, String unitid, String name);

    /**
     * 根据条件查菜单
     *
     * @param id     菜单ID
     * @param unitid 单位ID
     * @param pid    上级功能菜单ID
     * @param type   应用类型（APP、PC）
     * @return
     */
    Result findMenusByCondition(String id, String unitid, String pid, Integer type);

    /**
     * 分页查询菜单
     *
     * @param pageNo   页数
     * @param pageSize 行数
     * @param menus    参数
     * @return
     */
    Result findMenusPageByCondition(int pageNo, int pageSize, BsSystemMenus menus);

    /**
     * 菜单功能项查询
     *
     * @param unitid 单位ID
     * @param mid    菜单ID
     * @return
     */
    Result findMenusItemsByCondition(String unitid, String mid);

    /**
     * 菜单功能项关联详细信息查询(对外)
     *
     * @param id     菜单ID
     * @param unitid 单位ID
     * @return
     */
    Result findItemsInfoByCondition(String id, String unitid);
}
